import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

/*
 * @lc app=leetcode.cn id=151 lang=java
 *
 * [151] 颠倒字符串中的单词
 */

// @lc code=start
class Solution {
    //方法一
       public String reverseWords(String s) {
            s=s.trim();//去除字符串前后空白
            List<String> list=Arrays.asList(s.split("\\s+"));//按连续字符串分割
            Collections.reverse(list);//翻转
            return String.join(" ", list);
        }
    }
    //方法二
    // public String reverseWords(String s) {
    //     if(s==null) return null;
    //     char[] a=s.toCharArray();
    //     int n=a.length;
    //     //全部字符串翻转
    //     reverse(a, 0, n-1);
    //     //每个单词再进行翻转
    //     reverseWords(a, n);
    //     //去除多余空格
    //     return removeSpace(a, n);
    // }

    // void reverseWords(char[] a,int n){
    //     int i=0,j=0;
    //     while(i<n){
    //         while(i<j||i<n&&a[i]==' ')i++;
    //         while(j<i||j<n&&a[j]!=' ')j++;
    //         reverse(a, i, j-1);
    //     }
    // }

    // //去除空格
    // public String removeSpace(char[] a, int n){
    //     int i=0,j=0;
    //     while(j<n){
    //         while(j<n&&a[j]==' ')j++;
    //         while(j<n&&a[j]!=' ')a[i++]=a[j++];
    //         while(j<n&&a[j]==' ')j++;
    //         if(j<n)a[i++]=' ';
    //     }
    //     return new String(a).substring(0, i);
    // }

    // //翻转
    // public void reverse(char[] a,int i,int j){
    //     while(i<j){
    //         a[i]^=a[j];
    //         a[j]^=a[i];
    //         a[i]^=a[j];
    //         i++;
    //         j--;
    //     }
    // }
// }
// @lc code=end

